package pe.edu.unmsm.ocaa.workspace.negocio.servicio.impl;

import java.util.List;

import javax.annotation.Resource;

import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service;

import pe.edu.unmsm.ocaa.workspace.integracion.dao.ProgramaDAO;
import pe.edu.unmsm.ocaa.workspace.negocio.modelo.dto.GrupoDTO;
import pe.edu.unmsm.ocaa.workspace.negocio.modelo.dto.GrupoProgramaDTO;
import pe.edu.unmsm.ocaa.workspace.negocio.modelo.dto.ProgramaDTO;
import pe.edu.unmsm.ocaa.workspace.negocio.modelo.dto.UsuarioDTO;
import pe.edu.unmsm.ocaa.workspace.negocio.servicio.ProgramaService;

@Service
public class ProgramaServiceImpl implements ProgramaService {

	@Resource
	ProgramaDAO programaDao;
	@Override
	public List<ProgramaDTO> listarProgramas() throws DataAccessException {
		return programaDao.selectProgramas();
	}
	@Override
	public void guardarPrograma(ProgramaDTO programaEditar)
			throws DataAccessException {
		if(programaEditar.getIdPrograma()==null)
		{
			Integer idPrograma=programaDao.insertPrograma(programaEditar);
			for (GrupoDTO grupoDto : programaEditar.getGrupos()) {
				GrupoProgramaDTO usuprog=new GrupoProgramaDTO();
				usuprog.setIdPrograma(idPrograma);
				usuprog.setIdGrupo(grupoDto.getIdGrupo());
				programaDao.insertGrupoxPrograma(usuprog);
			}
		}
		else
		{
			programaDao.updatePrograma(programaEditar);
			programaDao.deleteGrupPrograxIdProg(programaEditar.getIdPrograma());
			for (GrupoDTO grupoDto : programaEditar.getGrupos()) {
				GrupoProgramaDTO usuprog=new GrupoProgramaDTO();
				usuprog.setIdPrograma(programaEditar.getIdPrograma());
				usuprog.setIdGrupo(grupoDto.getIdGrupo());
				programaDao.insertGrupoxPrograma(usuprog);
			}
		}
	}
	@Override
	public ProgramaDTO obtenerPrograma(Integer idPrograma)
			throws DataAccessException {
		ProgramaDTO prog=programaDao.selectPrograma(idPrograma);
		prog.setGrupos(programaDao.selectGruposxProg(idPrograma));
		return prog;
	}
	@Override
	public void eliminarPrograma(Integer idPrograma)
			throws DataAccessException {
		programaDao.deletePrograma(idPrograma);
		programaDao.deleteGrupPrograxIdProg(idPrograma);
	}

}